﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LongWay.GUI.backoffice.usuario
{
    public partial class usuario_abm : System.Web.UI.Page
    {
        #region Atributos

        /// <summary>
        /// Este es el ID del usuario que viene por QueryString, se lo guarda en el ViewState
        /// porque se mantiene el valor de esa variable mientras que el usuario no cambie de página.
        /// </summary>
        private String usuarioID
        {
            set { this.ViewState["usuarioID"] = value; }
            get
            {
                if (this.ViewState["usuarioID"] != null)
                    return this.ViewState["usuarioID"].ToString();
                else
                    return null;
            }
        }
        #endregion Atributos

        #region Eventos
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (!this.IsPostBack)
                {
                    this.usuarioID = this.Request.QueryString["usuarioID"];
                    this.FillData();

                    if (!String.IsNullOrEmpty(this.usuarioID))
                    {
                        this.btnAdd.Visible = false;
                    }
                    else
                    {
                        this.btnUpdate.Visible = false;
                        this.btnDelete.Visible = false;
                    }
                }

                this.btnDelete.Attributes.Add("onclick", "return confirm('¿Está seguro que desea eliminar el usuario?'); return false;");
            }
            catch (Exception ex)
            { this.lblError.Text = ex.Message; }
        }

        protected void btnAdd_Click(object sender, EventArgs e)
        {
            try
            {
                this.Save();
                this.GoBack();
            }
            catch (Exception ex)
            { this.lblError.Text = ex.Message; }
        }

        protected void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                if (!String.IsNullOrEmpty(this.usuarioID))
                {
                    Usuario oUsuario = new Usuario(Convert.ToInt32(this.usuarioID));

                    if (oUsuario.Id != 0)
                    {
                        oUsuario.Delete();
                        this.GoBack();
                    }
                }
            }
            catch (Exception ex)
            { this.lblError.Text = ex.Message; }
        }

        protected void btnBack_Click(object sender, EventArgs e)
        {
            try
            {
                this.GoBack();
            }
            catch (Exception ex)
            { this.lblError.Text = ex.Message; }
        }

        #endregion Eventos

        #region Funciones

        /// <summary>
        /// Llena los datos del formulario.
        /// </summary>
        private void FillData()
        {
            if (!String.IsNullOrEmpty(this.usuarioID))
            {
                Usuario oUsuario = new Usuario(Convert.ToInt32(this.usuarioID));

                if (oUsuario.Id != 0)
                {
                    this.txtEmail.Text = oUsuario.Email;
                    this.txtUsuario.Text = oUsuario.Nombre;
                    this.txtPassword.Text = oUsuario.Password;
                    this.txtPasswordConfirm.Text = oUsuario.Password;
                }
            }
        }

        /// <summary>
        /// Guarda el objeto con los datps del formulario.
        /// </summary>
        private void Save()
        {
            Usuario oUsuario = null;

            if (!String.IsNullOrEmpty(this.usuarioID))
                oUsuario = new Usuario(Convert.ToInt32(this.usuarioID));
            else
                oUsuario = new Usuario();

            oUsuario.Email = this.txtEmail.Text.Trim();
            oUsuario.Nombre = this.txtUsuario.Text.Trim();
            oUsuario.Password = this.txtPassword.Text.Trim();

            oUsuario.Save();
        }

        /// <summary>
        /// Vuelve a la página anterior.
        /// </summary>
        private void GoBack()
        {
            this.Response.Redirect("~/backoffice/usuario/usuario-sch.aspx");
        }
        #endregion Funciones
    }
}